home *** CD-ROM | disk | FTP | other *** search
/ Inter.Net 55-1 / Inter.Net 55-1.iso / CBuilder / Setup / BCB / data.z / imm.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-02-09  |  20.5 KB  |  598 lines

  1. /**********************************************************************/
  2. /*      IMM.H - Input Method Manager definitions                      */
  3. /*                                                                    */
  4. /*      Copyright (c) 1993-1996  Microsoft Corporation                */
  5. /**********************************************************************/
  6.  
  7. #ifndef _IMM_
  8. #define _IMM_        // defined if IMM.H has been included
  9. #pragma option push -b
  10.  
  11.  
  12. #ifdef __cplusplus
  13. extern "C" {
  14. #endif
  15.  
  16.  
  17. typedef DWORD     HIMC;
  18. typedef DWORD     HIMCC;
  19.  
  20. typedef HKL FAR  *LPHKL;
  21. typedef UINT FAR *LPUINT;
  22.  
  23.  
  24. typedef struct tagCOMPOSITIONFORM {
  25.     DWORD dwStyle;
  26.     POINT ptCurrentPos;
  27.     RECT  rcArea;
  28. } COMPOSITIONFORM, *PCOMPOSITIONFORM, NEAR *NPCOMPOSITIONFORM, FAR *LPCOMPOSITIONFORM;
  29.  
  30.  
  31. typedef struct tagCANDIDATEFORM {
  32.     DWORD dwIndex;
  33.     DWORD dwStyle;
  34.     POINT ptCurrentPos;
  35.     RECT  rcArea;
  36. } CANDIDATEFORM, *PCANDIDATEFORM, NEAR *NPCANDIDATEFORM, FAR *LPCANDIDATEFORM;
  37.  
  38.  
  39. typedef struct tagCANDIDATELIST {
  40.     DWORD dwSize;
  41.     DWORD dwStyle;
  42.     DWORD dwCount;
  43.     DWORD dwSelection;
  44.     DWORD dwPageStart;
  45.     DWORD dwPageSize;
  46.     DWORD dwOffset[1];
  47. } CANDIDATELIST, *PCANDIDATELIST, NEAR *NPCANDIDATELIST, FAR *LPCANDIDATELIST;
  48.  
  49. typedef struct tagREGISTERWORDA {
  50.     LPSTR   lpReading;
  51.     LPSTR   lpWord;
  52. } REGISTERWORDA, *PREGISTERWORDA, NEAR *NPREGISTERWORDA, FAR *LPREGISTERWORDA;
  53. typedef struct tagREGISTERWORDW {
  54.     LPWSTR  lpReading;
  55.     LPWSTR  lpWord;
  56. } REGISTERWORDW, *PREGISTERWORDW, NEAR *NPREGISTERWORDW, FAR *LPREGISTERWORDW;
  57. #ifdef UNICODE
  58. typedef REGISTERWORDW REGISTERWORD;
  59. typedef PREGISTERWORDW PREGISTERWORD;
  60. typedef NPREGISTERWORDW NPREGISTERWORD;
  61. typedef LPREGISTERWORDW LPREGISTERWORD;
  62. #else
  63. typedef REGISTERWORDA REGISTERWORD;
  64. typedef PREGISTERWORDA PREGISTERWORD;
  65. typedef NPREGISTERWORDA NPREGISTERWORD;
  66. typedef LPREGISTERWORDA LPREGISTERWORD;
  67. #endif // UNICODE
  68.  
  69.  
  70.  
  71. #define STYLE_DESCRIPTION_SIZE  32
  72.  
  73. typedef struct tagSTYLEBUFA {
  74.     DWORD       dwStyle;
  75.     CHAR        szDescription[STYLE_DESCRIPTION_SIZE];
  76. } STYLEBUFA, *PSTYLEBUFA, NEAR *NPSTYLEBUFA, FAR *LPSTYLEBUFA;
  77. typedef struct tagSTYLEBUFW {
  78.     DWORD       dwStyle;
  79.     WCHAR       szDescription[STYLE_DESCRIPTION_SIZE];
  80. } STYLEBUFW, *PSTYLEBUFW, NEAR *NPSTYLEBUFW, FAR *LPSTYLEBUFW;
  81. #ifdef UNICODE
  82. typedef STYLEBUFW STYLEBUF;
  83. typedef PSTYLEBUFW PSTYLEBUF;
  84. typedef NPSTYLEBUFW NPSTYLEBUF;
  85. typedef LPSTYLEBUFW LPSTYLEBUF;
  86. #else
  87. typedef STYLEBUFA STYLEBUF;
  88. typedef PSTYLEBUFA PSTYLEBUF;
  89. typedef NPSTYLEBUFA NPSTYLEBUF;
  90. typedef LPSTYLEBUFA LPSTYLEBUF;
  91. #endif // UNICODE
  92.  
  93.  
  94. // prototype of IMM API
  95.  
  96. HKL  WINAPI ImmInstallIMEA(LPCSTR lpszIMEFileName, LPCSTR lpszLayoutText);
  97. HKL  WINAPI ImmInstallIMEW(LPCWSTR lpszIMEFileName, LPCWSTR lpszLayoutText);
  98. #ifdef UNICODE
  99. #define ImmInstallIME  ImmInstallIMEW
  100. #else
  101. #define ImmInstallIME  ImmInstallIMEA
  102. #endif // !UNICODE
  103.  
  104. HWND WINAPI ImmGetDefaultIMEWnd(HWND);
  105.  
  106. UINT WINAPI ImmGetDescriptionA(HKL, LPSTR, UINT uBufLen);
  107. UINT WINAPI ImmGetDescriptionW(HKL, LPWSTR, UINT uBufLen);
  108. #ifdef UNICODE
  109. #define ImmGetDescription  ImmGetDescriptionW
  110. #else
  111. #define ImmGetDescription  ImmGetDescriptionA
  112. #endif // !UNICODE
  113.  
  114. UINT WINAPI ImmGetIMEFileNameA(HKL, LPSTR, UINT uBufLen);
  115. UINT WINAPI ImmGetIMEFileNameW(HKL, LPWSTR, UINT uBufLen);
  116. #ifdef UNICODE
  117. #define ImmGetIMEFileName  ImmGetIMEFileNameW
  118. #else
  119. #define ImmGetIMEFileName  ImmGetIMEFileNameA
  120. #endif // !UNICODE
  121.  
  122. DWORD WINAPI ImmGetProperty(HKL, DWORD);
  123.  
  124.  
  125. BOOL WINAPI ImmIsIME(HKL);
  126.  
  127. BOOL WINAPI ImmSimulateHotKey(HWND, DWORD);
  128.  
  129. HIMC WINAPI ImmCreateContext(void);
  130. BOOL WINAPI ImmDestroyContext(HIMC);
  131. HIMC WINAPI ImmGetContext(HWND);
  132. BOOL WINAPI ImmReleaseContext(HWND, HIMC);
  133. HIMC WINAPI ImmAssociateContext(HWND, HIMC);
  134.  
  135. LONG  WINAPI ImmGetCompositionStringA(HIMC, DWORD, LPVOID, DWORD);
  136. LONG  WINAPI ImmGetCompositionStringW(HIMC, DWORD, LPVOID, DWORD);
  137. #ifdef UNICODE
  138. #define ImmGetCompositionString  ImmGetCompositionStringW
  139. #else
  140. #define ImmGetCompositionString  ImmGetCompositionStringA
  141. #endif // !UNICODE
  142.  
  143. BOOL  WINAPI ImmSetCompositionStringA(HIMC, DWORD dwIndex, LPCVOID lpComp, DWORD, LPCVOID lpRead, DWORD);
  144. BOOL  WINAPI ImmSetCompositionStringW(HIMC, DWORD dwIndex, LPCVOID lpComp, DWORD, LPCVOID lpRead, DWORD);
  145. #ifdef UNICODE
  146. #define ImmSetCompositionString  ImmSetCompositionStringW
  147. #else
  148. #define ImmSetCompositionString  ImmSetCompositionStringA
  149. #endif // !UNICODE
  150.  
  151. DWORD WINAPI ImmGetCandidateListCountA(HIMC, LPDWORD lpdwListCount);
  152. DWORD WINAPI ImmGetCandidateListCountW(HIMC, LPDWORD lpdwListCount);
  153. #ifdef UNICODE
  154. #define ImmGetCandidateListCount  ImmGetCandidateListCountW
  155. #else
  156. #define ImmGetCandidateListCount  ImmGetCandidateListCountA
  157. #endif // !UNICODE
  158.  
  159. DWORD WINAPI ImmGetCandidateListA(HIMC, DWORD deIndex, LPCANDIDATELIST, DWORD dwBufLen);
  160. DWORD WINAPI ImmGetCandidateListW(HIMC, DWORD deIndex, LPCANDIDATELIST, DWORD dwBufLen);
  161. #ifdef UNICODE
  162. #define ImmGetCandidateList  ImmGetCandidateListW
  163. #else
  164. #define ImmGetCandidateList  ImmGetCandidateListA
  165. #endif // !UNICODE
  166.  
  167. DWORD WINAPI ImmGetGuideLineA(HIMC, DWORD dwIndex, LPSTR, DWORD dwBufLen);
  168. DWORD WINAPI ImmGetGuideLineW(HIMC, DWORD dwIndex, LPWSTR, DWORD dwBufLen);
  169. #ifdef UNICODE
  170. #define ImmGetGuideLine  ImmGetGuideLineW
  171. #else
  172. #define ImmGetGuideLine  ImmGetGuideLineA
  173. #endif // !UNICODE
  174.  
  175. BOOL WINAPI ImmGetConversionStatus(HIMC, LPDWORD, LPDWORD);
  176. BOOL WINAPI ImmSetConversionStatus(HIMC, DWORD, DWORD);
  177. BOOL WINAPI ImmGetOpenStatus(HIMC);
  178. BOOL WINAPI ImmSetOpenStatus(HIMC, BOOL);
  179.  
  180. #ifdef _WINGDI_
  181. #ifndef NOGDI
  182. BOOL WINAPI ImmGetCompositionFontA(HIMC, LPLOGFONTA);
  183. BOOL WINAPI ImmGetCompositionFontW(HIMC, LPLOGFONTW);
  184. #ifdef UNICODE
  185. #define ImmGetCompositionFont  ImmGetCompositionFontW
  186. #else
  187. #define ImmGetCompositionFont  ImmGetCompositionFontA
  188. #endif // !UNICODE
  189.  
  190. BOOL WINAPI ImmSetCompositionFontA(HIMC, LPLOGFONTA);
  191. BOOL WINAPI ImmSetCompositionFontW(HIMC, LPLOGFONTW);
  192. #ifdef UNICODE
  193. #define ImmSetCompositionFont  ImmSetCompositionFontW
  194. #else
  195. #define ImmSetCompositionFont  ImmSetCompositionFontA
  196. #endif // !UNICODE
  197. #endif  // ifndef NOGDI
  198. #endif  // ifdef _WINGDI_
  199.  
  200. BOOL    WINAPI ImmConfigureIMEA(HKL, HWND, DWORD, LPVOID);
  201. BOOL    WINAPI ImmConfigureIMEW(HKL, HWND, DWORD, LPVOID);
  202. #ifdef UNICODE
  203. #define ImmConfigureIME  ImmConfigureIMEW
  204. #else
  205. #define ImmConfigureIME  ImmConfigureIMEA
  206. #endif // !UNICODE
  207.  
  208. LRESULT WINAPI ImmEscapeA(HKL, HIMC, UINT, LPVOID);
  209. LRESULT WINAPI ImmEscapeW(HKL, HIMC, UINT, LPVOID);
  210. #ifdef UNICODE
  211. #define ImmEscape  ImmEscapeW
  212. #else
  213. #define ImmEscape  ImmEscapeA
  214. #endif // !UNICODE
  215.  
  216. DWORD   WINAPI ImmGetConversionListA(HKL, HIMC, LPCSTR, LPCANDIDATELIST, DWORD dwBufLen, UINT uFlag);
  217. DWORD   WINAPI ImmGetConversionListW(HKL, HIMC, LPCWSTR, LPCANDIDATELIST, DWORD dwBufLen, UINT uFlag);
  218. #ifdef UNICODE
  219. #define ImmGetConversionList  ImmGetConversionListW
  220. #else
  221. #define ImmGetConversionList  ImmGetConversionListA
  222. #endif // !UNICODE
  223.  
  224. BOOL    WINAPI ImmNotifyIME(HIMC, DWORD dwAction, DWORD dwIndex, DWORD dwValue);
  225.  
  226.  
  227. BOOL WINAPI ImmGetStatusWindowPos(HIMC, LPPOINT);
  228. BOOL WINAPI ImmSetStatusWindowPos(HIMC, LPPOINT);
  229. BOOL WINAPI ImmGetCompositionWindow(HIMC, LPCOMPOSITIONFORM);
  230. BOOL WINAPI ImmSetCompositionWindow(HIMC, LPCOMPOSITIONFORM);
  231. BOOL WINAPI ImmGetCandidateWindow(HIMC, DWORD, LPCANDIDATEFORM);
  232. BOOL WINAPI ImmSetCandidateWindow(HIMC, LPCANDIDATEFORM);
  233.  
  234. BOOL WINAPI ImmIsUIMessageA(HWND, UINT, WPARAM, LPARAM);
  235. BOOL WINAPI ImmIsUIMessageW(HWND, UINT, WPARAM, LPARAM);
  236. #ifdef UNICODE
  237. #define ImmIsUIMessage  ImmIsUIMessageW
  238. #else
  239. #define ImmIsUIMessage  ImmIsUIMessageA
  240. #endif // !UNICODE
  241.  
  242. UINT WINAPI ImmGetVirtualKey(HWND);
  243.  
  244. typedef int (CALLBACK *REGISTERWORDENUMPROCA)(LPCSTR, DWORD, LPCSTR, LPVOID);
  245. typedef int (CALLBACK *REGISTERWORDENUMPROCW)(LPCWSTR, DWORD, LPCWSTR, LPVOID);
  246. #ifdef UNICODE
  247. #define REGISTERWORDENUMPROC  REGISTERWORDENUMPROCW
  248. #else
  249. #define REGISTERWORDENUMPROC  REGISTERWORDENUMPROCA
  250. #endif // !UNICODE
  251.  
  252. BOOL WINAPI ImmRegisterWordA(HKL, LPCSTR lpszReading, DWORD, LPCSTR lpszRegister);
  253. BOOL WINAPI ImmRegisterWordW(HKL, LPCWSTR lpszReading, DWORD, LPCWSTR lpszRegister);
  254. #ifdef UNICODE
  255. #define ImmRegisterWord  ImmRegisterWordW
  256. #else
  257. #define ImmRegisterWord  ImmRegisterWordA
  258. #endif // !UNICODE
  259.  
  260. BOOL WINAPI ImmUnregisterWordA(HKL, LPCSTR lpszReading, DWORD, LPCSTR lpszUnregister);
  261. BOOL WINAPI ImmUnregisterWordW(HKL, LPCWSTR lpszReading, DWORD, LPCWSTR lpszUnregister);
  262. #ifdef UNICODE
  263. #define ImmUnregisterWord  ImmUnregisterWordW
  264. #else
  265. #define ImmUnregisterWord  ImmUnregisterWordA
  266. #endif // !UNICODE
  267.  
  268. UINT WINAPI ImmGetRegisterWordStyleA(HKL, UINT nItem, LPSTYLEBUFA);
  269. UINT WINAPI ImmGetRegisterWordStyleW(HKL, UINT nItem, LPSTYLEBUFW);
  270. #ifdef UNICODE
  271. #define ImmGetRegisterWordStyle  ImmGetRegisterWordStyleW
  272. #else
  273. #define ImmGetRegisterWordStyle  ImmGetRegisterWordStyleA
  274. #endif // !UNICODE
  275.  
  276. UINT WINAPI ImmEnumRegisterWordA(HKL, REGISTERWORDENUMPROCA, LPCSTR lpszReading, DWORD, LPCSTR lpszRegister, LPVOID);
  277. UINT WINAPI ImmEnumRegisterWordW(HKL, REGISTERWORDENUMPROCW, LPCWSTR lpszReading, DWORD, LPCWSTR lpszRegister, LPVOID);
  278. #ifdef UNICODE
  279. #define ImmEnumRegisterWord  ImmEnumRegisterWordW
  280. #else
  281. #define ImmEnumRegisterWord  ImmEnumRegisterWordA
  282. #endif // !UNICODE
  283.  
  284.  
  285. // wParam for WM_IME_CONTROL
  286. #define IMC_GETCANDIDATEPOS             0x0007
  287. #define IMC_SETCANDIDATEPOS             0x0008
  288. #define IMC_GETCOMPOSITIONFONT          0x0009
  289. #define IMC_SETCOMPOSITIONFONT          0x000A
  290. #define IMC_GETCOMPOSITIONWINDOW        0x000B
  291. #define IMC_SETCOMPOSITIONWINDOW        0x000C
  292. #define IMC_GETSTATUSWINDOWPOS          0x000F
  293. #define IMC_SETSTATUSWINDOWPOS          0x0010
  294. #define IMC_CLOSESTATUSWINDOW           0x0021
  295. #define IMC_OPENSTATUSWINDOW            0x0022
  296.  
  297.  
  298.  
  299.  
  300.  
  301.  
  302.  
  303. // wParam for WM_IME_CONTROL to the soft keyboard
  304. // dwAction for ImmNotifyIME
  305. #define NI_OPENCANDIDATE                0x0010
  306. #define NI_CLOSECANDIDATE               0x0011
  307. #define NI_SELECTCANDIDATESTR           0x0012
  308. #define NI_CHANGECANDIDATELIST          0x0013
  309. #define NI_FINALIZECONVERSIONRESULT     0x0014
  310. #define NI_COMPOSITIONSTR               0x0015
  311. #define NI_SETCANDIDATE_PAGESTART       0x0016
  312. #define NI_SETCANDIDATE_PAGESIZE        0x0017
  313.  
  314.  
  315. // lParam for WM_IME_SETCONTEXT
  316. #define ISC_SHOWUICANDIDATEWINDOW       0x00000001
  317. #define ISC_SHOWUICOMPOSITIONWINDOW     0x80000000
  318. #define ISC_SHOWUIGUIDELINE             0x40000000
  319. #define ISC_SHOWUIALLCANDIDATEWINDOW    0x0000000F
  320. #define ISC_SHOWUIALL                   0xC000000F
  321.  
  322.  
  323. // dwIndex for ImmNotifyIME/NI_COMPOSITIONSTR
  324. #define CPS_COMPLETE                    0x0001
  325. #define CPS_CONVERT                     0x0002
  326. #define CPS_REVERT                      0x0003
  327. #define CPS_CANCEL                      0x0004
  328.  
  329.  
  330. // the modifiers of hot key
  331. #define MOD_ALT                         0x0001
  332. #define MOD_CONTROL                     0x0002
  333. #define MOD_SHIFT                       0x0004
  334.  
  335.  
  336. #define MOD_LEFT                        0x8000
  337. #define MOD_RIGHT                       0x4000
  338.  
  339. #define MOD_ON_KEYUP                    0x0800
  340. #define MOD_IGNORE_ALL_MODIFIER         0x0400
  341.  
  342.  
  343. // Windows for Simplified Chinese Edition hot key ID from 0x10 - 0x2F
  344. #define IME_CHOTKEY_IME_NONIME_TOGGLE           0x10
  345. #define IME_CHOTKEY_SHAPE_TOGGLE                0x11
  346. #define IME_CHOTKEY_SYMBOL_TOGGLE               0x12
  347.  
  348. // Windows for Japanese Edition hot key ID from 0x30 - 0x4F
  349. #define IME_JHOTKEY_CLOSE_OPEN                  0x30
  350.  
  351. // Windows for Korean Edition hot key ID from 0x50 - 0x6F
  352. #define IME_KHOTKEY_SHAPE_TOGGLE                0x50
  353. #define IME_KHOTKEY_HANJACONVERT                0x51
  354. #define IME_KHOTKEY_ENGLISH                     0x52
  355.  
  356. // Windows for Tranditional Chinese Edition hot key ID from 0x70 - 0x8F
  357. #define IME_THOTKEY_IME_NONIME_TOGGLE           0x70
  358. #define IME_THOTKEY_SHAPE_TOGGLE                0x71
  359. #define IME_THOTKEY_SYMBOL_TOGGLE               0x72
  360.  
  361. // direct switch hot key ID from 0x100 - 0x11F
  362. #define IME_HOTKEY_DSWITCH_FIRST                0x100
  363. #define IME_HOTKEY_DSWITCH_LAST                 0x11F
  364.  
  365. // IME private hot key from 0x200 - 0x21F
  366. #define IME_HOTKEY_PRIVATE_FIRST                0x200
  367. #define IME_ITHOTKEY_RESEND_RESULTSTR           0x200
  368. #define IME_ITHOTKEY_PREVIOUS_COMPOSITION       0x201
  369. #define IME_ITHOTKEY_UISTYLE_TOGGLE             0x202
  370. #define IME_HOTKEY_PRIVATE_LAST                 0x21F
  371.  
  372.  
  373. // dwSystemInfoFlags bits
  374.  
  375. // parameter of ImmGetCompositionString
  376. #define GCS_COMPREADSTR                 0x0001
  377. #define GCS_COMPREADATTR                0x0002
  378. #define GCS_COMPREADCLAUSE              0x0004
  379. #define GCS_COMPSTR                     0x0008
  380. #define GCS_COMPATTR                    0x0010
  381. #define GCS_COMPCLAUSE                  0x0020
  382. #define GCS_CURSORPOS                   0x0080
  383. #define GCS_DELTASTART                  0x0100
  384. #define GCS_RESULTREADSTR               0x0200
  385. #define GCS_RESULTREADCLAUSE            0x0400
  386. #define GCS_RESULTSTR                   0x0800
  387. #define GCS_RESULTCLAUSE                0x1000
  388.  
  389. // style bit flags for WM_IME_COMPOSITION
  390. #define CS_INSERTCHAR                   0x2000
  391. #define CS_NOMOVECARET                  0x4000
  392.  
  393.  
  394.  
  395. // bits of fdwInit of INPUTCONTEXT
  396. // IME version constants
  397. #define IMEVER_0310                     0x0003000A
  398. #define IMEVER_0400                     0x00040000
  399.  
  400.  
  401. // IME property bits
  402. #define IME_PROP_AT_CARET               0x00010000
  403. #define IME_PROP_SPECIAL_UI             0x00020000
  404. #define IME_PROP_CANDLIST_START_FROM_1  0x00040000
  405. #define IME_PROP_UNICODE                0x00080000
  406.  
  407.  
  408. // IME UICapability bits
  409. #define UI_CAP_2700                     0x00000001
  410. #define UI_CAP_ROT90                    0x00000002
  411. #define UI_CAP_ROTANY                   0x00000004
  412.  
  413.  
  414. // ImmSetCompositionString Capability bits
  415. #define SCS_CAP_COMPSTR                 0x00000001
  416. #define SCS_CAP_MAKEREAD                0x00000002
  417.  
  418.  
  419. // IME WM_IME_SELECT inheritance Capability bits
  420. #define SELECT_CAP_CONVERSION           0x00000001
  421. #define SELECT_CAP_SENTENCE             0x00000002
  422.  
  423.  
  424. // ID for deIndex of ImmGetGuideLine
  425. #define GGL_LEVEL                       0x00000001
  426. #define GGL_INDEX                       0x00000002
  427. #define GGL_STRING                      0x00000003
  428. #define GGL_PRIVATE                     0x00000004
  429.  
  430.  
  431. // ID for dwLevel of GUIDELINE Structure
  432. #define GL_LEVEL_NOGUIDELINE            0x00000000
  433. #define GL_LEVEL_FATAL                  0x00000001
  434. #define GL_LEVEL_ERROR                  0x00000002
  435. #define GL_LEVEL_WARNING                0x00000003
  436. #define GL_LEVEL_INFORMATION            0x00000004
  437.  
  438.  
  439. // ID for dwIndex of GUIDELINE Structure
  440. #define GL_ID_UNKNOWN                   0x00000000
  441. #define GL_ID_NOMODULE                  0x00000001
  442. #define GL_ID_NODICTIONARY              0x00000010
  443. #define GL_ID_CANNOTSAVE                0x00000011
  444. #define GL_ID_NOCONVERT                 0x00000020
  445. #define GL_ID_TYPINGERROR               0x00000021
  446. #define GL_ID_TOOMANYSTROKE             0x00000022
  447. #define GL_ID_READINGCONFLICT           0x00000023
  448. #define GL_ID_INPUTREADING              0x00000024
  449. #define GL_ID_INPUTRADICAL              0x00000025
  450. #define GL_ID_INPUTCODE                 0x00000026
  451. #define GL_ID_INPUTSYMBOL               0x00000027
  452. #define GL_ID_CHOOSECANDIDATE           0x00000028
  453. #define GL_ID_REVERSECONVERSION         0x00000029
  454. #define GL_ID_PRIVATE_FIRST             0x00008000
  455. #define GL_ID_PRIVATE_LAST              0x0000FFFF
  456.  
  457.  
  458. // ID for dwIndex of ImmGetProperty
  459. #define IGP_GETIMEVERSION               (DWORD)(-4)
  460. #define IGP_PROPERTY                    0x00000004
  461. #define IGP_CONVERSION                  0x00000008
  462. #define IGP_SENTENCE                    0x0000000c
  463. #define IGP_UI                          0x00000010
  464. #define IGP_SETCOMPSTR                  0x00000014
  465. #define IGP_SELECT                      0x00000018
  466.  
  467.  
  468. // dwIndex for ImmSetCompositionString API
  469. #define SCS_SETSTR                      (GCS_COMPREADSTR|GCS_COMPSTR)
  470. #define SCS_CHANGEATTR                  (GCS_COMPREADATTR|GCS_COMPATTR)
  471. #define SCS_CHANGECLAUSE                (GCS_COMPREADCLAUSE|GCS_COMPCLAUSE)
  472.  
  473.  
  474. // attribute for COMPOSITIONSTRING Structure
  475. #define ATTR_INPUT                      0x00
  476. #define ATTR_TARGET_CONVERTED           0x01
  477. #define ATTR_CONVERTED                  0x02
  478. #define ATTR_TARGET_NOTCONVERTED        0x03
  479. #define ATTR_INPUT_ERROR                0x04
  480.  
  481.  
  482. // bit field for IMC_SETCOMPOSITIONWINDOW, IMC_SETCANDIDATEWINDOW
  483. #define CFS_DEFAULT                     0x0000
  484. #define CFS_RECT                        0x0001
  485. #define CFS_POINT                       0x0002
  486. #define CFS_FORCE_POSITION              0x0020
  487. #define CFS_CANDIDATEPOS                0x0040
  488. #define CFS_EXCLUDE                     0x0080
  489.  
  490.  
  491. // conversion direction for ImmGetConversionList
  492. #define GCL_CONVERSION                  0x0001
  493. #define GCL_REVERSECONVERSION           0x0002
  494. #define GCL_REVERSE_LENGTH              0x0003
  495.  
  496.  
  497. // bit field for conversion mode
  498. #define IME_CMODE_ALPHANUMERIC          0x0000
  499. #define IME_CMODE_NATIVE                0x0001
  500. #define IME_CMODE_CHINESE               IME_CMODE_NATIVE
  501. // IME_CMODE_HANGEUL is old name of IME_CMODE_HANGUL. It will be gone eventually.
  502. #define IME_CMODE_HANGEUL               IME_CMODE_NATIVE 
  503. #define IME_CMODE_HANGUL                IME_CMODE_NATIVE
  504. #define IME_CMODE_JAPANESE              IME_CMODE_NATIVE
  505. #define IME_CMODE_KATAKANA              0x0002  // only effect under IME_CMODE_NATIVE
  506. #define IME_CMODE_LANGUAGE              0x0003
  507. #define IME_CMODE_FULLSHAPE             0x0008
  508. #define IME_CMODE_ROMAN                 0x0010
  509. #define IME_CMODE_CHARCODE              0x0020
  510. #define IME_CMODE_HANJACONVERT          0x0040
  511. #define IME_CMODE_SOFTKBD               0x0080
  512. #define IME_CMODE_NOCONVERSION          0x0100
  513. #define IME_CMODE_EUDC                  0x0200
  514. #define IME_CMODE_SYMBOL                0x0400
  515.  
  516.  
  517. #define IME_SMODE_NONE                  0x0000
  518. #define IME_SMODE_PLAURALCLAUSE         0x0001
  519. #define IME_SMODE_SINGLECONVERT         0x0002
  520. #define IME_SMODE_AUTOMATIC             0x0004
  521. #define IME_SMODE_PHRASEPREDICT         0x0008
  522.  
  523.  
  524. // style of candidate
  525. #define IME_CAND_UNKNOWN                0x0000
  526. #define IME_CAND_READ                   0x0001
  527. #define IME_CAND_CODE                   0x0002
  528. #define IME_CAND_MEANING                0x0003
  529. #define IME_CAND_RADICAL                0x0004
  530. #define IME_CAND_STROKE                 0x0005
  531.  
  532.  
  533. // wParam of report message WM_IME_NOTIFY
  534. #define IMN_CLOSESTATUSWINDOW           0x0001
  535. #define IMN_OPENSTATUSWINDOW            0x0002
  536. #define IMN_CHANGECANDIDATE             0x0003
  537. #define IMN_CLOSECANDIDATE              0x0004
  538. #define IMN_OPENCANDIDATE               0x0005
  539. #define IMN_SETCONVERSIONMODE           0x0006
  540. #define IMN_SETSENTENCEMODE             0x0007
  541. #define IMN_SETOPENSTATUS               0x0008
  542. #define IMN_SETCANDIDATEPOS             0x0009
  543. #define IMN_SETCOMPOSITIONFONT          0x000A
  544. #define IMN_SETCOMPOSITIONWINDOW        0x000B
  545. #define IMN_SETSTATUSWINDOWPOS          0x000C
  546. #define IMN_GUIDELINE                   0x000D
  547. #define IMN_PRIVATE                     0x000E
  548.  
  549.  
  550. // error code of ImmGetCompositionString
  551. #define IMM_ERROR_NODATA                (-1)
  552. #define IMM_ERROR_GENERAL               (-2)
  553.  
  554.  
  555. // dialog mode of ImmConfigureIME
  556. #define IME_CONFIG_GENERAL              1
  557. #define IME_CONFIG_REGISTERWORD         2
  558. #define IME_CONFIG_SELECTDICTIONARY     3
  559.  
  560.  
  561. // dialog mode of ImmEscape
  562. #define IME_ESC_QUERY_SUPPORT           0x0003
  563. #define IME_ESC_RESERVED_FIRST          0x0004
  564. #define IME_ESC_RESERVED_LAST           0x07FF
  565. #define IME_ESC_PRIVATE_FIRST           0x0800
  566. #define IME_ESC_PRIVATE_LAST            0x0FFF
  567. #define IME_ESC_SEQUENCE_TO_INTERNAL    0x1001
  568. #define IME_ESC_GET_EUDC_DICTIONARY     0x1003
  569. #define IME_ESC_SET_EUDC_DICTIONARY     0x1004
  570. #define IME_ESC_MAX_KEY                 0x1005
  571. #define IME_ESC_IME_NAME                0x1006
  572. #define IME_ESC_SYNC_HOTKEY             0x1007
  573. #define IME_ESC_HANJA_MODE              0x1008
  574. #define IME_ESC_AUTOMATA                0x1009
  575. #define IME_ESC_PRIVATE_HOTKEY          0x100a
  576.  
  577.  
  578. // style of word registration
  579. #define IME_REGWORD_STYLE_EUDC          0x00000001
  580. #define IME_REGWORD_STYLE_USER_FIRST    0x80000000
  581. #define IME_REGWORD_STYLE_USER_LAST     0xFFFFFFFF
  582.  
  583.  
  584. // type of soft keyboard
  585. // for Windows Tranditional Chinese Edition
  586. #define SOFTKEYBOARD_TYPE_T1            0x0001
  587. // for Windows Simplified Chinese Edition
  588. #define SOFTKEYBOARD_TYPE_C1            0x0002
  589.  
  590.  
  591. #ifdef __cplusplus
  592. }
  593. #endif
  594.  
  595.  
  596. #pragma option pop
  597. #endif  // _IMM_
  598.